软件漏洞成因有哪些
软件漏洞成因有这些:
计算机系统结构决定了漏洞的必然性:现今的计算机基于冯·诺依曼体系结构,其基本特征决定了漏洞产生的必然。虽然计算机指令能够决定这些串如何解释,但是攻击者常常在内存溢出类攻击中,将数据溢出到可执行代码中,然后选择能够被当作有效指令的数据值来达到攻击的目的。
软件趋向大型化,第三方扩展增多:现代软件功能越来越强,功能组件越来越多,软件也变得越来越复杂。现在基于网络的应用系统更多地采用了分布式、集群和可扩展架构,软件内部结构错综复杂。软件应用向可扩展化方向发展,成熟的软件也可以接受开发者或第三方扩展,系统功能得到扩充。
新技术、新应用产生之初即缺乏安全性考虑:伴随信息技术的发展出现了很多新技术和新应用,如移动互联网、物联网、云计算、大数据和社交网络等。随着移动互联网、物联网的出现,网络终端的数量呈几何倍数增长,云计算和大数据的发展极大提高了攻击者的计算能力,社交网络为攻击者提供了新的信息获取途径。总之,这些新技术、新应用不仅扩展了互联网影响范围,提高了互联网的复杂度,也增大了漏洞产生的概率,必然会导致越来越多的漏洞的产生。
软件使用场景更具威胁:网络技术拓展了软件的功能范围,提高了其使用方便程度,与此同时,也给软件带来了更大风险。由于软件被应用于各种环境,面对不同层次的使用者,软件开发者需要考虑更多的安全问题。同时,黑客和恶意攻击者可以比以往获得更多的时间和机会来访问软件系统,并尝试发现软件中存在的安全漏洞。
对软件安全开发重视不够,软件开发者缺乏安全知识:传统软件开发更倾向于软件功能,而不注重对安全风险的管理。软件开发公司工期紧、任务重,为争夺客户资源、抢夺市场份额,经常仓促发布软件。软件开发人员将软件功能视为头等大事,对软件安全架构、安全防护措施认识不够,只关注是否实现需要的功能,很少从“攻击者”的角度来思考软件安全问题。如果采用严格的软件开发质量管理机制和多重测试技术,软件公司开发的产品的缺陷率会低很多。在软件安全性分析中可以使用缺陷密度(即每千行代码中存在的软件缺陷数量)来衡量软件的安全性。以下各类软件代码缺陷的统计数据也说明了这个情况。